
package server.buffs.buffclasses.cygnus;

import client.MapleBuffStat;
import client.MapleJob;
import client.MonsterStatus;
import server.MapleStatEffect;
import server.MapleStatInfo;
import server.buffs.AbstractBuffClass;


public class DawnWarriorBuff extends AbstractBuffClass {

    public DawnWarriorBuff() {
        buffs = new int[]{
            11001021, // 光之劍
            11001022, // 元素： 靈魂
            11101023, // 堅定信念
            11101022, // 沉月
//            11101003, // 憤怒
            11101024, // 光速反應
//            11101001, // Booster
//            11111007, // Radiant Charge
            11111022, // 旭日
            11111023, // 真實之眼
            11111024, // 靈魂守護者
            11121012, // 雙重力量（旭日）
            11121011, // 雙重力量（沉月）
            11121005, // 雙重力量
            11121006, // 靈魂誓約
//            11121000, // Call of Cygnus
        };
    }
    
    @Override
    public boolean containsJob(int job) {
        return MapleJob.is聖魂劍士(job);
    }

    @Override
    public void handleBuff(MapleStatEffect eff, int skill) {
        switch (skill) {
//               case 11101001: // booster
               case 11101024: //光速反應
                      eff.statups.put(MapleBuffStat.BOOSTER, eff.info.get(MapleStatInfo.x));
                      break;
               case 11001021: //光之劍
                       eff.statups.put(MapleBuffStat.ACCURACY_PERCENT, eff.info.get(MapleStatInfo.x));
                       eff.statups.put(MapleBuffStat.ADD_AVOIDABILITY, (int) eff.getLevel());
                       eff.statups.put(MapleBuffStat.INDIE_PAD, eff.info.get(MapleStatInfo.indiePad));
                       break;
                case 11001022: //元素： 靈魂
                       eff.statups.put(MapleBuffStat.SOUL_ELEMENT, eff.info.get(MapleStatInfo.prop));
                       eff.monsterStatus.put(MonsterStatus.STUN, 1);
                       break;
                case 11101023: //堅定信念
                       eff.statups.put(MapleBuffStat.INDIE_PAD, eff.info.get(MapleStatInfo.indiePad));
                       break;
                case 11101022: //沉月
                       eff.info.put(MapleStatInfo.time, 2100000000);
                       eff.statups.put(MapleBuffStat.SOLUNA_EFFECT, 1);
                       eff.statups.put(MapleBuffStat.ATTACK_COUNT, eff.info.get(MapleStatInfo.x));
                       eff.statups.put(MapleBuffStat.INDIE_CR_R, eff.info.get(MapleStatInfo.indieCr));
                       break;
                case 11111022: //旭日
                       eff.info.put(MapleStatInfo.time, 2100000000);
                       eff.statups.put(MapleBuffStat.SOLUNA_EFFECT, 2);
                       eff.statups.put(MapleBuffStat.INDIE_DAM_R, eff.info.get(MapleStatInfo.indieDamR));
                       eff.statups.put(MapleBuffStat.INDIE_BOOSTER, eff.info.get(MapleStatInfo.indieBooster));
                       break;
//                case 11111007: // rad charge
//                       eff.statups.put(MapleBuffStat.WK_CHARGE, eff.info.get(MapleStatInfo.x));
//                       eff.statups.put(MapleBuffStat.DAMAGE_BUFF, eff.info.get(MapleStatInfo.z));
//                       break;
                case 11111024: // 靈魂守護者
                       eff.statups.put(MapleBuffStat.INDIE_MAX_HP, eff.info.get(MapleStatInfo.indieMhp));
                       eff.statups.put(MapleBuffStat.INDIE_MDD, eff.info.get(MapleStatInfo.indiePdd));
                       eff.statups.put(MapleBuffStat.INDIE_PDD, eff.info.get(MapleStatInfo.indiePdd));
                       break;
                case 11121005: // 雙重力量
                      eff.statups.put(MapleBuffStat.SOLUNA_EFFECT, 1); // should be level but smd
                      break;
                case 11121011: // 雙重力量（沉月）
                       eff.statups.put(MapleBuffStat.EQUINOX_STANCE, 11121011);
                       eff.statups.put(MapleBuffStat.INDIE_CR_R, eff.info.get(MapleStatInfo.indieCr));
                       eff.statups.put(MapleBuffStat.ATTACK_COUNT, eff.info.get(MapleStatInfo.x));
                       break;
                case 11121012: // 雙重力量（旭日）
                       eff.statups.put(MapleBuffStat.EQUINOX_STANCE, 11121012);
                       eff.statups.put(MapleBuffStat.INDIE_DAM_R, eff.info.get(MapleStatInfo.indieDamR));
                       eff.statups.put(MapleBuffStat.INDIE_BOOSTER, eff.info.get(MapleStatInfo.indieBooster));
                       break;                
                case 11121006: // 靈魂誓約
                       eff.statups.put(MapleBuffStat.INDIE_CR_R, eff.info.get(MapleStatInfo.indieCr));
                       eff.statups.put(MapleBuffStat.STACK_ALLSTATS, eff.info.get(MapleStatInfo.indieAllStat));
                       eff.statups.put(MapleBuffStat.STANCE, eff.info.get(MapleStatInfo.prop));
                       break;
            default:
                System.out.println("Unhandled 聖魂劍士 Buff: " + skill);
                break;
        }
    }
}
